PANTHEON™ manual

 Categories
 PANTHEON Hilfe - Willkommen
[Reduzieren]PANTHEON
 [Reduzieren]Leitfäden für PANTHEON
  [Reduzieren]Leitfaden für PANTHEON
   [Reduzieren] Einstellungen
    [Vergrößern]Fächer
    [Vergrößern]Artikel
    [Vergrößern]POS
    [Vergrößern]Herstellung
    [Vergrößern]Personal
     Kalender
    [Vergrößern]Finanzen
    [Vergrößern]Zoll
    [Reduzieren]Programm
     [Vergrößern]Dokumenttypen
     [Reduzieren]Berichte in PANTHEON
       Einstellungen im Administrationspanel
      [Vergrößern]Berichte registrieren
       Druckvorschau
      [Vergrößern]Bericht Designer
      [Vergrößern]Berichte erstellen
      [Vergrößern]Gruppen und Aggregate
      [Vergrößern]Formatierung und Hervorhebung
       Verschachtelte Berichte (Unterberichte)
      [Vergrößern]Details zu Druckausgaben in PANTHEON
      [Reduzieren]Script
        "Hallo, Welt!" Skript
        Verwendung von Variablen, Datenbankfeldern und Aggregatfunktionen
        Verwendung von Berichtobjekten im Skript
        Veranstaltungen
        Beispiel für die Verwendung des "OnBeforePrint"-Ereignisses
        Gruppensumme im Gruppenheader drucken
        Aktueller Gesamtbetrag
        "OnAfterData" Ereignis
        Service-Objekte
        Verwendung des "Engine" Objekts
       [Vergrößern]PANTHEON-Funktionen für FastReport
       [Vergrößern]Beispiele mit Tabellen und Abfragen
       Bericht Design Überlegungen
      Dokumenttexte
      Liefermöglichkeiten
     [Vergrößern]Kundenkarten
     [Vergrößern]Administrationspanel
     [Vergrößern]Dashboard-Komponenten
      Dashboard-Berichte
      Ad-hoc-Analyse
     [Vergrößern]ARES
      SQL-Editor
    [Vergrößern]Dokumentation
    [Vergrößern]Benutzer ändern
   [Vergrößern]Bestellungen
   [Vergrößern]Waren
   [Vergrößern]Herstellung
   [Vergrößern]POS
   [Vergrößern]Service
   [Vergrößern]Finanzen
   [Vergrößern]Personal
   [Vergrößern]Analytik
   [Vergrößern]Desktop
   [Vergrößern]Hilfe
   [Vergrößern]Nachrichten und Warnungen
   [Vergrößern]Zusätzliche Programme
   [Vergrößern]Alte Produkte
  [Vergrößern]Leitfaden für PANTHEON Einzelhandel
  [Vergrößern]Leitfaden für PANTHEON Vet
  [Vergrößern]Leitfaden für PANTHEON Farming
 [Vergrößern]Benutzerhandbücher für PANTHEON
[Vergrößern]PANTHEON Web
[Vergrößern]PANTHEON Granulate
[Vergrößern]Benutzerseite

Load Time: 706,3377 ms
print   |
Label

Verwendung des "Engine" Objekts

Verwendung des "Engine" Objekts

Wir haben bereits gesagt, dass das “Engine” Objekt den Motor des Berichts darstellt, der die Berichtserstellung verwaltet. Der Prozess der Anordnung von Band(s) auf einer Seite kann durch die Eigenschaften und Methoden des Motors gesteuert werden. Zuerst etwas Theorie.

Das Diagramm unten zeigt verschiedene Dimensionen der Berichtseite.

_img242

Die physischen Dimensionen der Seite sind die Eigenschaften “PaperWidth” und “PaperHeight”, die im Objektinspektor sichtbar sind, wenn die Seite ausgewählt ist. Die Größe einer A4-Seite beträgt also 210 x 297 mm.

“PageWidth” und “PageHeight” sind die Dimensionen des druckbaren Bereichs, der normalerweise kleiner ist als die physischen Dimensionen der Seite. Die Größe des druckbaren Bereichs hängt von den Berichtseiteneigenschaften “LeftMargin”, “TopMargin”, “RightMargin” und “BottomMargin” ab. Die Größe des druckbaren Bereichs in Pixeln wird durch die Funktionen “Engine.PageWidth” und “Engine.PageHeight” zurückgegeben.

Schließlich ist “FreeSpace” die Höhe des freien Raums auf einer Seite. Wenn sich ein "Page Footer" Band auf der Seite befindet, wird seine Höhe bei der Berechnung des “FreeSpace” berücksichtigt. Diese Höhe wird in Pixeln durch die Funktion “Engine.FreeSpace” zurückgegeben. Beachten Sie, dass nach der Anzeige des nächsten Bands der freie Raum auf der Seite reduziert wird, dies wird bei der Berechnung des “FreeSpace” berücksichtigt.

Wie werden Berichtseiten erstellt? Der FastReport-Kern zeigt Bänder auf einer Seite an, solange genügend freier Raum vorhanden ist. Wenn kein freier Raum mehr vorhanden ist, wird das “Page Footer" Band gedruckt (falls erforderlich) und eine neue leere Seite erstellt. Wie bereits gesagt, wird nach der Anzeige des nächsten Bands die Höhe des freien Raums reduziert. Darüber hinaus beginnt die Anzeige des nächsten Bands von der aktuellen Position, die durch Koordinaten auf der X-Achse und der Y-Achse definiert ist. Die aktuelle Position wird durch “Engine.CurX” und “Engine.CurY” zurückgegeben. Nach dem Drucken des nächsten Bands erhöht sich CurY automatisch um die Höhe des gedruckten Bands. Nach dem Erstellen einer neuen Seite entspricht “CurY” “0.” “CurX” wird beim Drucken mehrspaltiger Berichte geändert.

“Engine.CurX” und “Engine.CurY” sind nicht nur zum Lesen, sondern auch zum Schreiben verfügbar. Das bedeutet, dass Bänder verschoben werden können, indem diese Werte erhöht oder verringert werden. Zum Beispiel in einem Bericht, der so aussieht:

_img243

Es kann auf folgende Weise gedruckt werden:

_img244

Dies wird erreicht, indem ein Handler für das “OnBeforePrint” Ereignis des Bands geschrieben wird:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

  Engine.CurX := Engine.CurX + 5;

end;

Die Änderung von “CurY” kann dazu führen, dass Bänder sich überlappen, zum Beispiel:

_img245

Erreicht durch dieses Skript:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

  Engine.CurY := Engine.CurY - 15;

end;

Die Methode “Engine.NewPage” fügt an einer beliebigen erforderlichen Stelle in einem Bericht einen Seitenumbruch ein, wonach das Drucken von oben auf der neuen Ausgabeseite fortgesetzt wird. In unserem Beispiel kann ein Umbruch nach dem Drucken des zweiten Datensatzes eingefügt werden:

procedure MasterData1OnAfterPrint(Sender: TfrxComponent);

begin

   if <Line> = 2 then

     Engine.NewPage;

end;

Beachten Sie, dass wir das “OnAfterPrint” Ereignis verwendet haben (das heißt, nachdem das Band gedruckt wurde). Beachten Sie auch, dass die Systemvariable “Line” die fortlaufende Nummer des Datensatzes zurückgibt.

Die Methode “Engine.NewColumn” fügt in mehrspaltigen Berichten einen Spaltenumbruch ein. Wenn auf der Seite keine freien Spalten mehr vorhanden sind, wird eine neue Seite erstellt.

Rechnung mit Zahlungsaufträgen


Das folgende Beispiel wird auf dem Ausdruck von Aufträgen und Rechnungen mit Zahlungsaufträgen präsentiert. Sie sind nur für die slowenische und kroatische Gesetzgebung verfügbar. Solche Berichte sind '2U2 - Rechnung - UPN - Formular' für slowenische und '2U7 - Rechnung - HUB 3A - Formular' für kroatische Gesetzgebung. Sie können das Design dieser Berichte sehen, indem Sie den Berichtsgestalter aus dem Berichtregister öffnen.

Wir möchten den Zahlungsauftrag immer genau am unteren Rand der Seite drucken. Um dieses Verhalten zu erzwingen, setzen wir die aktuelle vertikale Position (Engine.CurY) des Berichtszusammenfassungsbands so, dass genügend Platz vorhanden ist, um ihn auf dieser Seite anzuzeigen. Wir tun dies mit dem folgenden Code:

procedure UPNOnBeforePrint(Sender: TfrxComponent);
begin
  ...
  Engine.CurY := Engine.CurY + Engine.FreeSpace - UPN.Height - 1;
end; 

Wenn der Bericht erstellt wird, wird der Zahlungsauftrag vorhandenen Text überlappen, wenn er zu hoch ist. Daher müssen wir unseren Code korrigieren, um den Zahlungsauftrag in diesem Fall auf der nächsten Seite zu drucken.

procedure UPNOnBeforePrint(Sender: TfrxComponent);
begin
  ...
  if Engine.CurY > Engine.CurY + Engine.FreeSpace - UPN.Height - 1 then
    Engine.NewPage;  
  Engine.CurY := Engine.CurY + Engine.FreeSpace - UPN.Height - 1;
end; 



Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!